import Config from './Config'
/**
 * 基于Local Storage的Cache
 * 注意：
 * 由于微信环境下，同一个小程序的开发版、体验版、正式版是共用Storage，所以给以下的各个key添加前缀予以区分，以免Session冲突
 */
class Cache {
  constructor(){
  }

  getDreamUser() {
    return wx.getStorageSync(Config.client_type + '_dmx_user') || {}
  }

  cacheDreamUser(val) {
    wx.setStorageSync(Config.client_type + '_dmx_user', val)
  }

  getLocalSession() {
    return wx.getStorageSync(Config.client_type + '_dmx_session') || {}
  }

  cacheLocalSession(val) {
    wx.setStorageSync(Config.client_type + '_dmx_session', val)
  }

  clearLocalSession() {
    wx.removeStorageSync(Config.client_type + '_dmx_session')
  }

  getWxUser() {
    return wx.getStorageSync(Config.client_type + '_wx_user')
  }

  cacheWxUser(val) {
    wx.setStorageSync(Config.client_type + '_wx_user', val)
  }

  clearUserData() {
    wx.removeStorageSync(Config.client_type + '_dmx_user')
    wx.removeStorageSync(Config.client_type + '_dmx_session')
    wx.removeStorageSync(Config.client_type + '_wx_user')
  }

  /**
   * 获取token前务必确保当前小程序中已经缓存了token
   * 由于网络请求是异步的，调用者需提前调用ensureUserToken
   *
   * @param t type of token
   * @return string
  */
  getUserToken(t) {
    let tokenData = wx.getStorageSync(Config.client_type + '_user_' + t + '_token')

    const now = new Date().getTime()
    if (!tokenData || (tokenData.expired > 0 && tokenData.expired * 1000 < now)) {
      return 'none'
    }
    return tokenData.token
  }

  setUserToken(t, val) {
    console.log('setUserToken : ', t, val)
    wx.setStorageSync(Config.client_type + '_user_' + t + '_token', val)
  }

  isAvatarFixed() {
    return wx.getStorageSync(Config.client_type + '_user_avatar_fixed') > 3
  }

  setAvatarFixed() {
    let val = wx.getStorageSync(Config.client_type + '_user_avatar_fixed')
    wx.setStorageSync(Config.client_type + '_user_avatar_fixed', (val || 0) + 1)
  }
}

export default Cache
